package com.sike.service;

import com.sike.entity.CartItem;
import com.sike.mapper.CartMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class CartService {
    // 日志
    private static final Logger logger = LoggerFactory.getLogger(CartService.class);

    // 依赖注入
    private final CartMapper cartMapper;

    // 构造器注入
    @Autowired
    public CartService(CartMapper cartMapper) {
        this.cartMapper = cartMapper;
    }

    // 添加药品到购物车
    public void addToCart(CartItem cartItem) {
        cartMapper.addToCart(cartItem);
    }

    // 更新购物车中的药品数量
    public void updateCartItemQuantity(int userId, int drugId, int quantity) {
        cartMapper.updateCartItemQuantity(userId, drugId, quantity);
    }

    // 从购物车中移除药品
    public void removeCartItem(int userId, int drugId) {
        logger.info("尝试用drugId:{}删除用户:{}的购物车物品", userId, drugId);
        try {
            cartMapper.removeCartItem(userId, drugId);
            logger.info("成功移除用户:{}和drugId:{}的购物车物品", userId, drugId);
        } catch (Exception e) {
            logger.error("用drugId:{}删除用户:{}的购物车项目时出错。错误:{}", userId, drugId, e.getMessage());
            throw e;
        }
    }


    // 获取用户的购物车所有项
    public List<CartItem> findAllCartItemsByUserId(int userId) {
        return cartMapper.findAllCartItemsByUserId(userId);
    }

    // 获取购物车全部项
    public List<CartItem> findAllCartItems() {
        return cartMapper.findAllCartItems();
    }

    // 清空购物车
    public void clearCartByUserId(int userId) {
        logger.info("尝试清空用户:{}的购物车", userId);
        try {
            cartMapper.clearCartByUserId(userId);
            logger.info("成功清空用户:{}的购物车", userId);
        } catch (Exception e) {
            logger.error("清空用户:{}的购物车时出错。错误:{}", userId, e.getMessage());
            throw e;
        }
    }

    // 在 CartService 中添加方法以删除特定的购物车项
    public void removeSpecificCartItems(int userId, List<Integer> drugIds) {
        for (Integer drugId : drugIds) {
            cartMapper.removeCartItem(userId, drugId);
        }
    }


}





